Software documentation facilitates the use and operation of a software product and is an integral component to software development. Software documentation provides various types of information including, for example, descriptions of the capabilities of a system; technical documentation for blocks of code, algorithms, and application programming interfaces (APIs); and manuals for end users, system administrators, and support staff. Because software documentation provides information for the operation of a software product, documentation should be updated throughout the development life cycle.
Despite the need to keep software documentation current and comprehensive, documentation is generally provided at a very late stage of development. In many instances, documentation is manually generated by knowledge managers with the help of people involved in the development process. Waiting until the end of the development cycle to provide software documentation presents grave risks including, for example, the high likelihood that implementation details for the software product may be forgotten over time. These gaps in knowledge can adversely impact many people including an end user's ability to properly use a software product, a technical partner's ability to customize and/or enhance a software product, as well as a software company's ability to troubleshoot products and answer requests for information (RFIs) for their products.